UIAPduinoを使ったCW Decoderの製作
2025/11/06 Version 1.0対応 written by JA1AOQ/JA9OIR
12/10 Version 1.1リリース
2025/12/12 Version 1.2リリース
2026/01/11 Version 1.3リリース
2026/02/04 Version 1.4リリース
[2026/02/15 Version 1.5リリース
2026/04/9 Version 1.6リリース
2026/05/18 V2基板リリース
hr.icon
概要
OZ1JHM Skovholm Hanson Hjalmar氏によって公開されているCWデコーダーを、Arduino Pro Micro互換マイコンUIAPduinoに移植したお試しキットを用意しました。UIAPduinoは、Switch Science等で最近安価に購入できます。また、各イベントで無償配布されています。このマイコンボードを使用することにより最低限の追加部品でCWデコーダを製作することができます。
 注)本配布物は、ソフトウェアのチューニングや実際のフィールド試験が不十分なため、引き続き改善予定です
https://scrapbox.io/files/6a103f7334d306895b824cbb.jpeg
hr.icon
特徴
■ ハードウェア仕様(V1)
CPU:UIAPduino(CH32V003) 48MHz RAM2kB、ROM16kB
0.96inch カラーTFT液晶(SPI接続)
MAX4466マイクモジュール搭載
MODE/UP/DOWN切換えのタクトSW搭載
電源:USB Type-C(5V、50mA以下)
WCH-LinkEエミュレータ接続可能
専用プリント基板による簡単組立て
■ ハードウェア仕様(V2)
1.14inch カラーTFT液晶(SPI接続)
3.5mmモノラルAUX入力(AUX入力時はマイクが切り離されます)
■ ソフトウェア仕様:以下の2種類のモードをMODE SWで切換え可能
CWデコード機能:欧文・和文(自動/SW切換え)、TONE周波数(700,800,1000Hz)SW切換え、通信速度(自動追従、最大50WPM)
スペクトラムアナライザ機能:約40~2.5kHzまでのスペクトル解析 (分解能 約50Hz)
hr.icon
回路図(V1)
schematic.pdf
回路図(V2)
https://scrapbox.io/files/6a103fb834d306895b824d1b.png
hr.icon
プリント基板
基板は両面スルーホールの72mm x 47mmサイズ(秋月C基板サイズ)です。
V1基板
https://scrapbox.io/files/6919173dc1513d905e75b9a1.pnghttps://scrapbox.io/files/6919179220b443224e27b1c1.png
V2基板
https://scrapbox.io/files/6a0a69a95c3c134ed44051f3.pnghttps://scrapbox.io/files/6a0a69b85c3c134ed4405232.png
hr.icon
製作方法
CW Decoderを簡単に体験できるように、以下の3種類を用意しました。それぞれの製作方法はリンク先を参照してください。
UIAPduino CW Decoder完成版
UIAPduino CW Decoder簡単キットの製作方法
UIAPduino CW Decoderフルキットの製作方法
hr.icon
使用方法
UIAPduinoのUSB Type-Cコネクタに、モバイルバッテリーやUSB電源アダプタを接続します。ノイズやリップルのない良質な電源を接続してください。
電源接続後、LCDにバージョン等が表示された後、CW Decode画面になります。CWデコーダ画面では上1/4のステータス行に、速度、欧文/和文、デコード周波数(600/800/1000Hz)が表示されます。デコード結果は下部に13列3行で表示されます。画面右橋にはデコードレベル(音量)を示す黄色のバーが表示されます。バーの高さが80%程度になるように音量調整を行ってください。
デコード率は、マイクから入力される音の音質、音量および雑音等に大きく影響されます。あらかじめスペクトラムアナライザ画面で、音質や音量を確認する等の調整が重要です。
V2基板では、3.5mmのモノラルプラグで無線機のオーディオ出力に接続することができます。
https://scrapbox.io/files/690d4eb4cae65b2263c679a2.JPGhttps://scrapbox.io/files/690d4ebdcbc1e7737d8b1913.JPG
左下のMODE SWを押下することにより、スペクトラムアナライザ画面になります。MODE SWは、スペクトルアナライザ画面とCW Decoder画面をトグル切換えします。
https://scrapbox.io/files/690d4ed8cae65b2263c67bc6.JPGhttps://scrapbox.io/files/690d4ede7dcc18709a564783.JPG
マイクから音声等が入力されると、音のスペクトルが表示されることを確認してください。マイク入力をFFT解析した結果が表示されます。分解能は約50Hzです。CWをデコードする場合は、600Hzから800Hz近辺に音のピークがある必要があります。
https://scrapbox.io/files/690d4eed197698a67601135c.JPG
マイクのゲインは、マイクモジュールの裏の半固定抵抗を調整することで変更できます。左に廻すとゲインが大きくなります。ケース裏蓋の穴から精密ドライバ等で調整してください。テスト時には、写真の半固定抵抗の位置が良好な状態でした。マイクモジュールのロットにより半固定抵抗の位置にズレがあることがあります。
https://scrapbox.io/files/690cbf34443fe930a8923762.JPGhttps://scrapbox.io/files/690d4fbfcae65b2263c68663.png
MODE SWを1回押下し、CW Decoder画面を表示します。欧文/和文は自動切換えしますが、デコードミスがある場合は、中央下のボタンを押下することで強制的に切り替えることができます。また、右下のボタンで、デコードする中心周波数を600Hz/800Hz/1000Hzから選択することができます。
以下のA1 Clubのサイトのモールス符号受信練習ソフトを利用にモールス音をPCのスピーカーから発生させることにより、CWのデコード機能を確認することができます。
https://scrapbox.io/files/690d4fd1f842a27900aab097.JPG
https://a1club.org/practice/
hr.icon
ソフトウェアについて
UIAPduinoに搭載されたCH32V003のROM/RAMサイズは、それぞれ16kB、2kBと大きくありません。
開発環境にArduinoを使う場合、Arudinoのコアライブラリの未使用コードを削除せずにそのままリンクするオプションがつけられてるため、オブジェクトサイズが増大します。さらに、浮動小数点ライブラリ等もかなり大きく、FLASHサイズを圧迫します。
このため、本ソフトウェアではArduino環境の代わりにch32funという開発環境を使用しましたが、浮動小数点ライブラリの問題は残りますので、浮動小数点演算部分はすべて整数演算に置き換える等、OZ1JHM氏によって公開されているCWデコーダーを大幅に改変しています。
hr.icon
ソフトウェア開発環境
ソースファイル、回路図、gerberファイル等は以下のGitHubから取得してください。
Ver 1.0〜1.5 :https://github.com/pokibon3/UIAP_CWDecoder
Ver 1.6〜 :https://github.com/pokibon3/UIAP_CWDecoder2
注)Ver 1.6からのリポジトリにはUIAPduino Pro Micro CH32V006 V1.1とST7789 LCDの対応が含まれていますが現在βテスト中です。
開発環境はVisual Studio Code+PlatformIO+ch32funです。VSCodeにPlatformIOをインストール後、src以下のフォルダを開くことでビルド環境が構築できます。
ソフトウェアの書込みやデバッグにはWCH LinkEエミュレータを使用します。基板左下のデバッグ用ヘッダに、GND、VCC(5V)、SWDの3本を接続してください。(L型のピンヘッダ等をはんだ付けしてください)これにより、VSCodeのPlatformIO環境から直接書き込みやデバッグを行う事ができます。また、基板のTXDをWCH LinkEのRXDに接続することにより、Serial経由でprint文によるデバッグができるようになります。
https://scrapbox.io/files/690d5e4c79f032566be33a04.JPG
hr.icon
ファームウェア書き込み方法
Windows環境であれば、以下の手順により開発環境を構築しなくても、コンパイル済みのファームウェアをUIAPduinoのUSB Type-Cコネクタ経由で書き込むことができます。
GitHubからリポジトリ全体をクローン/ダウンロードするか、または、firmwareUpdateフォルダのzipファイルをダウンロードします。
GitHubのfirmwareUpdate1.4.zip を適当なフォルダにダウンロードする。
https://scrapbox.io/files/693962071ba5df7af47a85e0.png
zipファイルを解凍します。
UIAPduinoのリセットボタンをアクリルカバーの穴から細いピンなどで押しながら、Windows PCとUSBケーブルで接続します。ケーブル接続後、リセットボタンを離すことによりUIAPduinoはUSB BootLoaderモードになります。
エクスプローラからflash.batファイルをダブルクリックします。
https://scrapbox.io/files/69396281807a4d42b0c08700.png
commandプロンプトが開き、ファームウェア書込が開始されます。ファームウェア書き込み中は、UIAPduinoのLEDが薄く点滅します。書き込み時間は20~30秒程度です。
書込み完了後、何かキーを押下することでウインドウを閉じます。
https://scrapbox.io/files/691498918a56ccb4d0cc4f17.png
この後、UIAPduinoの電源を再投入するか、リセットボタンを押下することで新しいプログラムが起動します。起動後のバージョン表示でアップデートされたことを確認してください。
hr.icon
過去のアップデートファイル
アップデートにより不具合等発生した場合は、以前のアップデートを適用してください。
firmwareUpdate1.0.zip
firmwareUpdate1.1.zip
firmwareUpdate1.2.zip
firmwareUpdate1.3.zip
firmwareUpdate1.4.zip
firmwareUpdate1.5.zip
firmwareUpdate1.6.zip
hr.icon
動作デモ
https://x.com/pokibon/status/1986458392618229777?s=20
https://x.com/pokibon/status/1997135388658540848?s=20
hr.icon
今後の展開について
私自身、長年CWの運用から離れており、実際のQSOでのフィールドテストが十分に行えていないため、ぜひご意見・ご感想をお寄せいただき、今後の改良に活かしたいと考えています。
改善版のファームウェアについては今後、GitHubにて公開する予定です。
DE JA9OIR/JA1AOQ
X/Twitter:キミヲ(Kimio Ohe)@pokibon https://x.com/pokibon
Facebook:https://www.facebook.com/kimio.ohe
hr.icon